home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- *
- * NSSDC/CDF Write a character string value.
- *
- * Version 1.0, 26-Feb-92, Hughes STX
- *
- * Modification history:
- *
- * V1.0 26-Feb-92, J Love Original version.
- *
- ******************************************************************************/
-
- #include "cdfdist.h"
-
- /******************************************************************************
- * WriteStringValue.
- ******************************************************************************/
-
- void WriteStringValue (fp, numChars, value, ccc, MaXcc)
- FILE *fp;
- long numChars;
- void *value;
- int ccc;
- int MaXcc;
- {
- int x, len, i;
- int sss; /* SubString Size. */
- int cccBase = ccc;
- char *substring;
- char *string = (char *) value;
- char delim;
-
- if (ccc + 1 + numChars + 1 - 1 <= MaXcc) {
- delim = PickDelim (string);
- fprintf (fp, "%c%.*s%c", delim, numChars, string, delim);
- }
- else {
- sss = MaXcc - ccc - 4 + 1; /* 4 for starting '"' and ending '" -'
- (assuming '"' is the delimeter). */
- MALLOC (substring, sss + 1);
- x = 0;
-
- while (x + sss < numChars) {
- if (string[x+sss] == ' ') /* First character on next line will be a
- blank. */
- len = sss;
- else
- if (string[x+sss-1] == ' ') /* Last character on this line is a blank. */
- len = sss;
- else { /* Look for a blank at which to break the line. */
- for (i = x + sss - 2; i > x; i--) if (string[i] == ' ') break;
- if (i > x)
- len = i - x + 1;
- else
- len = sss;
- }
-
- memmove (substring, &string[x], len);
- substring[len] = NUL;
- for (i = 0; i < len; i++) if (!isprint(substring[i])) substring[i] = '.';
- delim = PickDelim (substring);
- ccc += fprintf (fp, "%c%s%c -", delim, substring, delim);
- fprintf (fp, "\n");
- nCHARACTERS (fp, cccBase, ' ');
- ccc = cccBase;
- x += len;
- }
-
- len = numChars - x;
- memmove (substring, &string[x], len);
- substring[len] = NUL;
- for (i = 0; i < len; i++) if (!isprint(substring[i])) substring[i] = '.';
- delim = PickDelim (substring);
- ccc += fprintf (fp, "%c%s%c", delim, substring, delim);
-
- free(substring);
- }
-
- return;
- }
-